//函数 1.参数类型的校验、约束  2.函数返回值类型的约束

function getFullName(firstName:string,lastName:string):string{
    return firstName + lastName
}


console.log(getFullName('12','zhang'))

//可选参数 参数?:数据类型

//参数给默认值 参数：数据类型=值

//获取列表  分页   ===>  放在最后

function getList(pagenum:number=1,limit?:number){
    //获取列表的数据
}

getList()

//后台 let {pagenum=1,limit=5} = ctx.query;

//剩余参数 ===> 放在参数的最后面

function sum(...num:number[]):number{
    return num.reduce((pre,cur) => {
        return pre+cur
    })
}

sum(1,2,3,4);

//函数重载 函数重载在同一范围内声明几个功能类似的同名函数，但是这些同名函数的形参（参数的个数，类型或者顺序）必须不同，也就是说用同一个函数完成不同的功能。

function getInfo(name:string):string;
function getInfo(age:number):string;
function getInfo(params:string|number):string{
    if(typeof params === 'string'){
        return `我的名字叫${params}`
    }else if(typeof params === 'number'){
        return `我的年龄是${params}`
    }else{
        return '错误'
    }
}

console.log(getInfo(18))

